home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr42 / vocshow2.zip / VOC_IO.LIB < prev    next >
Text File  |  1993-06-08  |  3KB  |  76 lines

  1. -- Copyright 1992 by Tom Moran.  May be used by anyone for any purpose.
  2.  
  3. with DOS_Io,
  4.      Voc_Data;
  5.  
  6. package Voc_Io is
  7.  
  8.   Data_Error         : exception; -- impossible data values, premature eof,etc.
  9.   Not_Yet_Implemented: exception; -- not handled by this package
  10.   Disk_Full          : exception; -- DOS write couldn't write full record
  11.   Status_Error       : exception; -- handle must be open to read/write/get info
  12.   Name_Error         : exception; -- path/file doesn't exist
  13.  
  14.   Max_Sound_Length: Voc_Data.Block_Lengths := Voc_Data.Block_Lengths'Last;
  15.   -- reads of sound blocks bigger than max_sound_length will be split
  16.   --   automatically. may be modified by user
  17.  
  18.   type Handles is limited private;
  19.  
  20.   subtype Positive_Durations is Voc_Data.Positive_Durations;
  21.  
  22.   procedure Open(Name    : in     String;
  23.                  Handle  : in out Handles);
  24.  
  25.   procedure Read(Handle  : in out Handles;
  26.                  Block   :    out Voc_Data.Blocks);
  27.  
  28.   procedure Create(Name    : in     String;
  29.                    Handle  : in out Handles);
  30.  
  31.   procedure Write_Sound(Handle  : in out Handles;
  32.                         Block   : in     Voc_Data.Blocks);
  33.  
  34.   procedure Write_Silence(Handle     : in out Handles;
  35.                           Interval   : in     Positive_Durations;
  36.                           Sample_Rate: in  Voc_Data.Sample_Rates := 8000);
  37.  
  38.   procedure Write_Marker(Handle  : in out Handles;
  39.                          Mark    : in     Voc_Data.Markers);
  40.  
  41.   procedure Write_Text(Handle  : in out Handles;
  42.                        Text    : in     String);
  43.  
  44.   procedure Write_Repeat(Handle  : in out Handles;
  45.                          Count   : in     Voc_Data.Repeat_Counts);
  46.  
  47.   procedure Write_End_Repeat(Handle  : in out Handles);
  48.  
  49.   procedure Close(Handle  : in out Handles);
  50.  
  51. private
  52.   type File_Block_Lengths is range 0 .. 2 ** 24 - 1;
  53.   for File_Block_Lengths'Size use 24;
  54.  
  55.   type Existing_Voice_Infos(Voice_To_Continue: Boolean := False) is
  56.     record
  57.       case Voice_To_Continue is
  58.         when False =>
  59.           null;
  60.         when True =>
  61.           Sample_Rate     : Voc_Data.Sample_Rates;
  62.           Packing         : Voc_Data.Pack_Types;
  63.           Remaining_Length: File_Block_Lengths;
  64.       end case;
  65.     end record;
  66.  
  67.   type Handles is
  68.     record
  69.       File_Handle: DOS_Io.File_Handle;
  70.       Is_Input   : Boolean := True;
  71.       Terminated : Boolean := False;
  72.       Voice_Info : Existing_Voice_Infos;
  73.     end record;
  74.  
  75. end Voc_Io;
  76.